import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from datetime import datetime,date, time, timedelta
data = pd.read_excel(r'C:\...\DATA.xlsx',index_col= 0)
TT = pd.read_excel(r'C:\...\transit time.xlsx', index_col= 0)
TT.info()
<class 'pandas.core.frame.DataFrame'> Index: 15 entries, HK to KR Data columns (total 3 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 MIN 15 non-null int64 1 MAX 15 non-null int64 2 Service 15 non-null object dtypes: int64(2), object(1) memory usage: 480.0+ bytes
data.info()
<class 'pandas.core.frame.DataFrame'> Int64Index: 978 entries, 5504232 to 5560532 Data columns (total 13 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Service 978 non-null object 1 CountryFrom 978 non-null object 2 Uploading 978 non-null object 3 Pcs 978 non-null int64 4 BrKG 978 non-null float64 5 Vol 978 non-null float64 6 Ordered 978 non-null datetime64[ns] 7 ETD 978 non-null datetime64[ns] 8 ATD 978 non-null datetime64[ns] 9 ETA 978 non-null datetime64[ns] 10 ATA 978 non-null datetime64[ns] 11 UnitTruckRegnr 889 non-null object 12 Unloading 961 non-null object dtypes: datetime64[ns](5), float64(2), int64(1), object(5) memory usage: 107.0+ KB
data.head(3)
Service | CountryFrom | Uploading | Pcs | BrKG | Vol | Ordered | ETD | ATD | ETA | ATA | UnitTruckRegnr | Unloading | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FileNr | |||||||||||||
5504232 | ML | CN | XIAMEN | 2 | 118.0 | 0.80 | 2022-07-08 | 2022-08-28 | 2022-08-28 | 2022-10-31 | 2022-10-31 | NaN | TALINAS |
5500356 | ML | JP | Osaka | 6 | 299.6 | 1.35 | 2022-06-22 | 2022-07-06 | 2022-07-08 | 2022-10-17 | 2022-10-17 | NaN | TALINAS |
5506509 | ML | CN | TIANJIN | 3 | 512.0 | 3.72 | 2022-07-19 | 2022-08-07 | 2022-08-08 | 2022-10-17 | 2022-10-17 | NaN | KLAIPEDA |
TT.head(3)
MIN | MAX | Service | |
---|---|---|---|
CountryFrom | |||
HK | 55 | 65 | ML |
KR | 55 | 65 | ML |
TW | 55 | 65 | ML |
def actual_TT(s):
return s['ATA'] - s['ATD']
data['actual_TT'] = data.apply(actual_TT,axis= 'columns')
data.head(3)
Service | CountryFrom | Uploading | Pcs | BrKG | Vol | Ordered | ETD | ATD | ETA | ATA | UnitTruckRegnr | Unloading | actual_TT | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FileNr | ||||||||||||||
5504232 | ML | CN | XIAMEN | 2 | 118.0 | 0.80 | 2022-07-08 | 2022-08-28 | 2022-08-28 | 2022-10-31 | 2022-10-31 | NaN | TALINAS | 64 days |
5500356 | ML | JP | Osaka | 6 | 299.6 | 1.35 | 2022-06-22 | 2022-07-06 | 2022-07-08 | 2022-10-17 | 2022-10-17 | NaN | TALINAS | 101 days |
5506509 | ML | CN | TIANJIN | 3 | 512.0 | 3.72 | 2022-07-19 | 2022-08-07 | 2022-08-08 | 2022-10-17 | 2022-10-17 | NaN | KLAIPEDA | 70 days |
data['actual_TT'] = data['actual_TT'].dt.days
print(data.actual_TT.dtype)
int64
data['actual_TT'] = data['actual_TT'].astype(int)
Actual_TT_intervals = data.groupby(['Service', 'CountryFrom'])['actual_TT'].agg([min, max])
Actual_TT_intervals.rename(columns = {'min':'min_actual','max':'max_actual'}, inplace = True)
Actual_TT_intervals.head(5)
min_actual | max_actual | ||
---|---|---|---|
Service | CountryFrom | ||
ML | CA | 45 | 82 |
CN | 35 | 75 | |
HK | 50 | 85 | |
IL | 53 | 53 | |
IN | 42 | 67 |
pd.merge(TT, Actual_TT_intervals, on=['CountryFrom', 'Service'], suffixes=('_offered', '_actual'))
#trumpai apžvelgiam min ir max faktinį atvykimą pagal šalį bei servisą su tuo kas buvo žadėta:
MIN | MAX | Service | min_actual | max_actual | |
---|---|---|---|---|---|
CountryFrom | |||||
HK | 55 | 65 | ML | 50 | 85 |
KR | 55 | 65 | ML | 66 | 80 |
TW | 55 | 65 | ML | 42 | 64 |
JP | 55 | 65 | ML | 80 | 101 |
CN | 50 | 55 | ML | 35 | 75 |
IN | 50 | 60 | ML | 42 | 67 |
US | 40 | 50 | ML | 32 | 82 |
IL | 50 | 60 | ML | 53 | 53 |
MY | 55 | 65 | ML | 60 | 60 |
VN | 55 | 65 | ML | 57 | 78 |
TH | 55 | 65 | ML | 58 | 76 |
PH | 55 | 65 | ML | 65 | 71 |
CA | 40 | 50 | ML | 45 | 82 |
CN | 18 | 22 | RW | 13 | 28 |
KR | 45 | 50 | RW | 47 | 58 |
offered_vs_actual = pd.merge(data, TT, on=['CountryFrom', 'Service'], suffixes=('_Actual', '_offered'))
offered_vs_actual = offered_vs_actual.drop(['Pcs', 'BrKG','Vol','UnitTruckRegnr', 'ETD','ETA','Unloading'], axis = 1)
offered_vs_actual.head(10) #sujungiame lenteles kad matytume kas buvo žadėta ir kaip atvyko faktiškai vienoje lentelėje
Service | CountryFrom | Uploading | Ordered | ATD | ATA | actual_TT | MIN | MAX | |
---|---|---|---|---|---|---|---|---|---|
0 | ML | CN | XIAMEN | 2022-07-08 | 2022-08-28 | 2022-10-31 | 64 | 50 | 55 |
1 | ML | CN | TIANJIN | 2022-07-19 | 2022-08-08 | 2022-10-17 | 70 | 50 | 55 |
2 | ML | CN | YANTIAN | 2022-07-21 | 2022-09-15 | 2022-10-24 | 39 | 50 | 55 |
3 | ML | CN | YANTIAN | 2022-07-26 | 2022-09-15 | 2022-10-24 | 39 | 50 | 55 |
4 | ML | CN | YANTIAN | 2022-08-05 | 2022-09-15 | 2022-10-24 | 39 | 50 | 55 |
5 | ML | CN | YANTIAN | 2022-08-12 | 2022-09-15 | 2022-10-24 | 39 | 50 | 55 |
6 | ML | CN | YANTIAN | 2022-08-12 | 2022-09-15 | 2022-10-24 | 39 | 50 | 55 |
7 | ML | CN | YANTIAN | 2022-08-12 | 2022-09-15 | 2022-10-24 | 39 | 50 | 55 |
8 | ML | CN | YANTIAN | 2022-08-12 | 2022-09-15 | 2022-10-24 | 39 | 50 | 55 |
9 | ML | CN | YANTIAN | 2022-08-16 | 2022-09-15 | 2022-10-24 | 39 | 50 | 55 |
def uzsakymai(s):
if s['actual_TT'] <= s['MAX']:
return("laiku")
else:
return("pavėlavo")
#apibrėžiam kas skaitosi pavėlavęs užsakymas
offered_vs_actual['uzsakymai'] = offered_vs_actual.apply(uzsakymai, axis='columns')
offered_vs_actual.loc[:10,['Service','CountryFrom','Uploading','MAX', 'actual_TT','uzsakymai']]
Service | CountryFrom | Uploading | MAX | actual_TT | uzsakymai | |
---|---|---|---|---|---|---|
0 | ML | CN | XIAMEN | 55 | 64 | pavėlavo |
1 | ML | CN | TIANJIN | 55 | 70 | pavėlavo |
2 | ML | CN | YANTIAN | 55 | 39 | laiku |
3 | ML | CN | YANTIAN | 55 | 39 | laiku |
4 | ML | CN | YANTIAN | 55 | 39 | laiku |
5 | ML | CN | YANTIAN | 55 | 39 | laiku |
6 | ML | CN | YANTIAN | 55 | 39 | laiku |
7 | ML | CN | YANTIAN | 55 | 39 | laiku |
8 | ML | CN | YANTIAN | 55 | 39 | laiku |
9 | ML | CN | YANTIAN | 55 | 39 | laiku |
10 | ML | CN | YANTIAN | 55 | 39 | laiku |
offered_vs_actual['uzsakymai'].value_counts()
laiku 840 pavėlavo 138 Name: uzsakymai, dtype: int64
Visi_uzsakymai=offered_vs_actual['uzsakymai'].value_counts()
Visi_uzsakymai.plot.pie(autopct='%1.1f%%',title = 'Bendras užsakymų įvykdymas',colors= ['#9FE331', 'tomato'])
<AxesSubplot:title={'center':'Bendras užsakymų įvykdymas'}, ylabel='uzsakymai'>
Rail = offered_vs_actual[offered_vs_actual['Service'] == 'RW'].copy()
Rail.loc[:215,['Service','CountryFrom','Uploading','MAX', 'actual_TT','uzsakymai']]
#atskiriam geležinkelio užsakymus
Service | CountryFrom | Uploading | MAX | actual_TT | uzsakymai | |
---|---|---|---|---|---|---|
205 | RW | CN | XIAN | 22 | 15 | laiku |
206 | RW | CN | XIAN | 22 | 15 | laiku |
207 | RW | CN | XIAN | 22 | 15 | laiku |
208 | RW | CN | XIAN | 22 | 15 | laiku |
209 | RW | CN | XIAN | 22 | 15 | laiku |
210 | RW | CN | XIAN | 22 | 15 | laiku |
211 | RW | CN | XIAN | 22 | 15 | laiku |
212 | RW | CN | XIAN | 22 | 15 | laiku |
213 | RW | CN | XIAN | 22 | 15 | laiku |
214 | RW | CN | XIAN | 22 | 15 | laiku |
215 | RW | CN | XIAN | 22 | 15 | laiku |
Rail['uzsakymai'].value_counts()
laiku 605 pavėlavo 41 Name: uzsakymai, dtype: int64
Rail_uzsakymai=Rail['uzsakymai'].value_counts()
Rail_uzsakymai.plot.pie(autopct='%1.1f%%', title = 'Rail užsakymų įvykdymas', colors= ['#9FE331', 'tomato'])
<AxesSubplot:title={'center':'Rail užsakymų įvykdymas'}, ylabel='uzsakymai'>
def anksciau(s):
return s['MAX'] - s['actual_TT']
Rail['dienu_skirtumas'] = Rail.apply(anksciau, axis = 'columns')
Rail.loc[:215,['Service','CountryFrom','Uploading','MAX', 'actual_TT','uzsakymai','dienu_skirtumas']]
Service | CountryFrom | Uploading | MAX | actual_TT | uzsakymai | dienu_skirtumas | |
---|---|---|---|---|---|---|---|
205 | RW | CN | XIAN | 22 | 15 | laiku | 7 |
206 | RW | CN | XIAN | 22 | 15 | laiku | 7 |
207 | RW | CN | XIAN | 22 | 15 | laiku | 7 |
208 | RW | CN | XIAN | 22 | 15 | laiku | 7 |
209 | RW | CN | XIAN | 22 | 15 | laiku | 7 |
210 | RW | CN | XIAN | 22 | 15 | laiku | 7 |
211 | RW | CN | XIAN | 22 | 15 | laiku | 7 |
212 | RW | CN | XIAN | 22 | 15 | laiku | 7 |
213 | RW | CN | XIAN | 22 | 15 | laiku | 7 |
214 | RW | CN | XIAN | 22 | 15 | laiku | 7 |
215 | RW | CN | XIAN | 22 | 15 | laiku | 7 |
Rail.groupby('dienu_skirtumas')['Uploading'].count()
#pasižiūrime kaip išsibarstę atvykimai kad nustatyti periodus funkcijai
dienu_skirtumas -8 1 -6 21 -2 19 1 26 2 24 3 25 4 97 5 133 6 88 7 136 8 45 9 31 Name: Uploading, dtype: int64
def atvykimas(s):
if s['MAX'] - s['actual_TT'] >= 7:
return("atvyko 7 ir daugiau dienomis anksčiau")
elif 5 <= s['MAX'] - s['actual_TT'] < 7:
return("atvyko nuo 5 iki 7 dienų anksčiau")
elif 0 <= s['MAX'] - s['actual_TT'] < 5:
return("atvyko laiku")
elif s['dienu_skirtumas'] == -2:
return("pavėlavo 2 dienomis")
elif s['dienu_skirtumas'] == -6:
return("pavėlavo 6 dienomis")
else:
return("pavėlavo 8 dienomis")
Rail['atvykimas'] = Rail.apply(atvykimas, axis='columns')
Rail.loc[:500,['Service','CountryFrom','Uploading','MAX', 'actual_TT','uzsakymai','atvykimas']]
Service | CountryFrom | Uploading | MAX | actual_TT | uzsakymai | atvykimas | |
---|---|---|---|---|---|---|---|
205 | RW | CN | XIAN | 22 | 15 | laiku | atvyko 7 ir daugiau dienomis anksčiau |
206 | RW | CN | XIAN | 22 | 15 | laiku | atvyko 7 ir daugiau dienomis anksčiau |
207 | RW | CN | XIAN | 22 | 15 | laiku | atvyko 7 ir daugiau dienomis anksčiau |
208 | RW | CN | XIAN | 22 | 15 | laiku | atvyko 7 ir daugiau dienomis anksčiau |
209 | RW | CN | XIAN | 22 | 15 | laiku | atvyko 7 ir daugiau dienomis anksčiau |
... | ... | ... | ... | ... | ... | ... | ... |
496 | RW | CN | XIAN | 22 | 17 | laiku | atvyko nuo 5 iki 7 dienų anksčiau |
497 | RW | CN | XIAN | 22 | 21 | laiku | atvyko laiku |
498 | RW | CN | XIAN | 22 | 17 | laiku | atvyko nuo 5 iki 7 dienų anksčiau |
499 | RW | CN | XIAN | 22 | 21 | laiku | atvyko laiku |
500 | RW | CN | XIAN | 22 | 17 | laiku | atvyko nuo 5 iki 7 dienų anksčiau |
296 rows × 7 columns
Detalus_rail=Rail['atvykimas'].value_counts()
Detalus_rail.plot.pie(autopct='%1.1f%%', title = 'Detalesnė Rail užsakymų analizė', colors= ['yellowgreen', 'green', 'plum', 'tomato', 'darkorange','gold'])
<AxesSubplot:title={'center':'Detalesnė Rail užsakymų analizė'}, ylabel='atvykimas'>
rail_min = Rail['actual_TT'].min(axis=0)
rail_min
13
rail_CN = Rail[Rail['CountryFrom'] =='CN']
rail_CN['actual_TT'].mean()
17.10248447204969
rail_KR = Rail[Rail['CountryFrom'] =='KR']
rail_KR['actual_TT'].mean()
52.5
Rail[Rail['dienu_skirtumas'] > 0].sort_values(by='ATA',ascending = False)
#matome kad didelė dalis krovinių atvyko anksčiau, kadangi paskutiniai kroviniai atvyko anksčiau,
#vidutinis TT laikas sudaro 17d, būtų galima mažinti tranzitinį laiką pasiūlymuose iki 16-18d
Service | CountryFrom | Uploading | Ordered | ATD | ATA | actual_TT | MIN | MAX | uzsakymai | dienu_skirtumas | atvykimas | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
841 | RW | CN | CHENGDU | 2023-02-28 | 2023-03-22 | 2023-04-06 | 15 | 18 | 22 | laiku | 7 | atvyko 7 ir daugiau dienomis anksčiau |
848 | RW | CN | CHENGDU | 2023-03-02 | 2023-03-22 | 2023-04-06 | 15 | 18 | 22 | laiku | 7 | atvyko 7 ir daugiau dienomis anksčiau |
847 | RW | CN | CHENGDU | 2023-03-01 | 2023-03-22 | 2023-04-06 | 15 | 18 | 22 | laiku | 7 | atvyko 7 ir daugiau dienomis anksčiau |
846 | RW | CN | CHENGDU | 2023-03-01 | 2023-03-22 | 2023-04-06 | 15 | 18 | 22 | laiku | 7 | atvyko 7 ir daugiau dienomis anksčiau |
845 | RW | CN | CHENGDU | 2023-03-01 | 2023-03-22 | 2023-04-06 | 15 | 18 | 22 | laiku | 7 | atvyko 7 ir daugiau dienomis anksčiau |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
225 | RW | CN | XIAN | 2022-09-20 | 2022-10-02 | 2022-10-17 | 15 | 18 | 22 | laiku | 7 | atvyko 7 ir daugiau dienomis anksčiau |
226 | RW | CN | XIAN | 2022-09-20 | 2022-10-02 | 2022-10-17 | 15 | 18 | 22 | laiku | 7 | atvyko 7 ir daugiau dienomis anksčiau |
227 | RW | CN | XIAN | 2022-09-20 | 2022-10-02 | 2022-10-17 | 15 | 18 | 22 | laiku | 7 | atvyko 7 ir daugiau dienomis anksčiau |
228 | RW | CN | XIAN | 2022-09-29 | 2022-10-02 | 2022-10-17 | 15 | 18 | 22 | laiku | 7 | atvyko 7 ir daugiau dienomis anksčiau |
205 | RW | CN | XIAN | 2022-08-16 | 2022-10-02 | 2022-10-17 | 15 | 18 | 22 | laiku | 7 | atvyko 7 ir daugiau dienomis anksčiau |
605 rows × 12 columns
Pavėluotas_rail = Rail[Rail['actual_TT'] > Rail['MAX']]
Pavėluotas_rail.groupby('dienu_skirtumas').agg({'dienu_skirtumas': 'count', 'MAX':'max', 'actual_TT': 'max'})
dienu_skirtumas | MAX | actual_TT | |
---|---|---|---|
dienu_skirtumas | |||
-8 | 1 | 50 | 58 |
-6 | 21 | 22 | 28 |
-2 | 19 | 22 | 24 |
Pavėluotas_rail[Pavėluotas_rail['dienu_skirtumas'] <= -2].sort_values(by='ATA',ascending = False)
Service | CountryFrom | Uploading | Ordered | ATD | ATA | actual_TT | MIN | MAX | uzsakymai | dienu_skirtumas | atvykimas | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
719 | RW | CN | XIAN | 2023-01-05 | 2023-02-14 | 2023-03-14 | 28 | 18 | 22 | pavėlavo | -6 | pavėlavo 6 dienomis |
729 | RW | CN | XIAN | 2023-01-10 | 2023-02-14 | 2023-03-14 | 28 | 18 | 22 | pavėlavo | -6 | pavėlavo 6 dienomis |
718 | RW | CN | XIAN | 2023-01-05 | 2023-02-14 | 2023-03-14 | 28 | 18 | 22 | pavėlavo | -6 | pavėlavo 6 dienomis |
722 | RW | CN | XIAN | 2023-01-06 | 2023-02-14 | 2023-03-14 | 28 | 18 | 22 | pavėlavo | -6 | pavėlavo 6 dienomis |
723 | RW | CN | XIAN | 2023-01-06 | 2023-02-14 | 2023-03-14 | 28 | 18 | 22 | pavėlavo | -6 | pavėlavo 6 dienomis |
724 | RW | CN | XIAN | 2023-01-06 | 2023-02-14 | 2023-03-14 | 28 | 18 | 22 | pavėlavo | -6 | pavėlavo 6 dienomis |
725 | RW | CN | XIAN | 2023-01-09 | 2023-02-14 | 2023-03-14 | 28 | 18 | 22 | pavėlavo | -6 | pavėlavo 6 dienomis |
726 | RW | CN | XIAN | 2023-01-09 | 2023-02-14 | 2023-03-14 | 28 | 18 | 22 | pavėlavo | -6 | pavėlavo 6 dienomis |
727 | RW | CN | XIAN | 2023-01-09 | 2023-02-14 | 2023-03-14 | 28 | 18 | 22 | pavėlavo | -6 | pavėlavo 6 dienomis |
728 | RW | CN | XIAN | 2023-01-10 | 2023-02-14 | 2023-03-14 | 28 | 18 | 22 | pavėlavo | -6 | pavėlavo 6 dienomis |
730 | RW | CN | XIAN | 2023-01-10 | 2023-02-14 | 2023-03-14 | 28 | 18 | 22 | pavėlavo | -6 | pavėlavo 6 dienomis |
720 | RW | CN | XIAN | 2023-01-06 | 2023-02-14 | 2023-03-14 | 28 | 18 | 22 | pavėlavo | -6 | pavėlavo 6 dienomis |
731 | RW | CN | XIAN | 2023-01-10 | 2023-02-14 | 2023-03-14 | 28 | 18 | 22 | pavėlavo | -6 | pavėlavo 6 dienomis |
732 | RW | CN | XIAN | 2023-01-10 | 2023-02-14 | 2023-03-14 | 28 | 18 | 22 | pavėlavo | -6 | pavėlavo 6 dienomis |
733 | RW | CN | XIAN | 2023-01-10 | 2023-02-14 | 2023-03-14 | 28 | 18 | 22 | pavėlavo | -6 | pavėlavo 6 dienomis |
734 | RW | CN | XIAN | 2023-01-10 | 2023-02-14 | 2023-03-14 | 28 | 18 | 22 | pavėlavo | -6 | pavėlavo 6 dienomis |
735 | RW | CN | XIAN | 2023-01-11 | 2023-02-14 | 2023-03-14 | 28 | 18 | 22 | pavėlavo | -6 | pavėlavo 6 dienomis |
736 | RW | CN | XIAN | 2023-01-11 | 2023-02-14 | 2023-03-14 | 28 | 18 | 22 | pavėlavo | -6 | pavėlavo 6 dienomis |
737 | RW | CN | XIAN | 2023-01-13 | 2023-02-14 | 2023-03-14 | 28 | 18 | 22 | pavėlavo | -6 | pavėlavo 6 dienomis |
738 | RW | CN | XIAN | 2023-01-13 | 2023-02-14 | 2023-03-14 | 28 | 18 | 22 | pavėlavo | -6 | pavėlavo 6 dienomis |
721 | RW | CN | XIAN | 2023-01-06 | 2023-02-14 | 2023-03-14 | 28 | 18 | 22 | pavėlavo | -6 | pavėlavo 6 dienomis |
975 | RW | KR | WUHAN | 2022-11-29 | 2022-12-10 | 2023-02-06 | 58 | 45 | 50 | pavėlavo | -8 | pavėlavo 8 dienomis |
631 | RW | CN | XIAN | 2022-11-25 | 2023-01-02 | 2023-01-26 | 24 | 18 | 22 | pavėlavo | -2 | pavėlavo 2 dienomis |
639 | RW | CN | XIAN | 2022-12-12 | 2023-01-02 | 2023-01-26 | 24 | 18 | 22 | pavėlavo | -2 | pavėlavo 2 dienomis |
632 | RW | CN | XIAN | 2022-12-06 | 2023-01-02 | 2023-01-26 | 24 | 18 | 22 | pavėlavo | -2 | pavėlavo 2 dienomis |
633 | RW | CN | XIAN | 2022-12-08 | 2023-01-02 | 2023-01-26 | 24 | 18 | 22 | pavėlavo | -2 | pavėlavo 2 dienomis |
634 | RW | CN | XIAN | 2022-12-08 | 2023-01-02 | 2023-01-26 | 24 | 18 | 22 | pavėlavo | -2 | pavėlavo 2 dienomis |
635 | RW | CN | XIAN | 2022-12-09 | 2023-01-02 | 2023-01-26 | 24 | 18 | 22 | pavėlavo | -2 | pavėlavo 2 dienomis |
636 | RW | CN | XIAN | 2022-12-12 | 2023-01-02 | 2023-01-26 | 24 | 18 | 22 | pavėlavo | -2 | pavėlavo 2 dienomis |
637 | RW | CN | XIAN | 2022-12-12 | 2023-01-02 | 2023-01-26 | 24 | 18 | 22 | pavėlavo | -2 | pavėlavo 2 dienomis |
638 | RW | CN | XIAN | 2022-12-12 | 2023-01-02 | 2023-01-26 | 24 | 18 | 22 | pavėlavo | -2 | pavėlavo 2 dienomis |
640 | RW | CN | XIAN | 2022-12-13 | 2023-01-02 | 2023-01-26 | 24 | 18 | 22 | pavėlavo | -2 | pavėlavo 2 dienomis |
648 | RW | CN | XIAN | 2023-01-03 | 2023-01-02 | 2023-01-26 | 24 | 18 | 22 | pavėlavo | -2 | pavėlavo 2 dienomis |
641 | RW | CN | XIAN | 2022-12-13 | 2023-01-02 | 2023-01-26 | 24 | 18 | 22 | pavėlavo | -2 | pavėlavo 2 dienomis |
642 | RW | CN | XIAN | 2022-12-13 | 2023-01-02 | 2023-01-26 | 24 | 18 | 22 | pavėlavo | -2 | pavėlavo 2 dienomis |
643 | RW | CN | XIAN | 2022-12-13 | 2023-01-02 | 2023-01-26 | 24 | 18 | 22 | pavėlavo | -2 | pavėlavo 2 dienomis |
644 | RW | CN | XIAN | 2022-12-13 | 2023-01-02 | 2023-01-26 | 24 | 18 | 22 | pavėlavo | -2 | pavėlavo 2 dienomis |
645 | RW | CN | XIAN | 2022-12-13 | 2023-01-02 | 2023-01-26 | 24 | 18 | 22 | pavėlavo | -2 | pavėlavo 2 dienomis |
646 | RW | CN | XIAN | 2022-12-14 | 2023-01-02 | 2023-01-26 | 24 | 18 | 22 | pavėlavo | -2 | pavėlavo 2 dienomis |
647 | RW | CN | XIAN | 2022-12-14 | 2023-01-02 | 2023-01-26 | 24 | 18 | 22 | pavėlavo | -2 | pavėlavo 2 dienomis |
630 | RW | CN | XIAN | 2022-10-26 | 2023-01-02 | 2023-01-26 | 24 | 18 | 22 | pavėlavo | -2 | pavėlavo 2 dienomis |
Rail_vėvavimai=Pavėluotas_rail.groupby('dienu_skirtumas')['Uploading'].count()
Rail_vėvavimai.plot.pie(autopct='%1.1f%%', title = 'Vėluojančių Rail užsakymų analizė', colors= ['tomato','orange','gold'])
<AxesSubplot:title={'center':'Vėluojančių Rail užsakymų analizė'}, ylabel='Uploading'>
Rail_CN=rail_CN.drop(['Service', 'CountryFrom', 'Ordered','atvykimas','dienu_skirtumas'], axis = 1).copy()
Rail_CN
Uploading | ATD | ATA | actual_TT | MIN | MAX | uzsakymai | |
---|---|---|---|---|---|---|---|
205 | XIAN | 2022-10-02 | 2022-10-17 | 15 | 18 | 22 | laiku |
206 | XIAN | 2022-10-02 | 2022-10-17 | 15 | 18 | 22 | laiku |
207 | XIAN | 2022-10-02 | 2022-10-17 | 15 | 18 | 22 | laiku |
208 | XIAN | 2022-10-02 | 2022-10-17 | 15 | 18 | 22 | laiku |
209 | XIAN | 2022-10-02 | 2022-10-17 | 15 | 18 | 22 | laiku |
... | ... | ... | ... | ... | ... | ... | ... |
844 | CHENGDU | 2023-03-22 | 2023-04-06 | 15 | 18 | 22 | laiku |
845 | CHENGDU | 2023-03-22 | 2023-04-06 | 15 | 18 | 22 | laiku |
846 | CHENGDU | 2023-03-22 | 2023-04-06 | 15 | 18 | 22 | laiku |
847 | CHENGDU | 2023-03-22 | 2023-04-06 | 15 | 18 | 22 | laiku |
848 | CHENGDU | 2023-03-22 | 2023-04-06 | 15 | 18 | 22 | laiku |
644 rows × 7 columns
Rail_CN['year/month'] = pd.to_datetime(Rail_CN['ATA']).dt.to_period('M')
Rail_CN
Uploading | ATD | ATA | actual_TT | MIN | MAX | uzsakymai | year/month | |
---|---|---|---|---|---|---|---|---|
205 | XIAN | 2022-10-02 | 2022-10-17 | 15 | 18 | 22 | laiku | 2022-10 |
206 | XIAN | 2022-10-02 | 2022-10-17 | 15 | 18 | 22 | laiku | 2022-10 |
207 | XIAN | 2022-10-02 | 2022-10-17 | 15 | 18 | 22 | laiku | 2022-10 |
208 | XIAN | 2022-10-02 | 2022-10-17 | 15 | 18 | 22 | laiku | 2022-10 |
209 | XIAN | 2022-10-02 | 2022-10-17 | 15 | 18 | 22 | laiku | 2022-10 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
844 | CHENGDU | 2023-03-22 | 2023-04-06 | 15 | 18 | 22 | laiku | 2023-04 |
845 | CHENGDU | 2023-03-22 | 2023-04-06 | 15 | 18 | 22 | laiku | 2023-04 |
846 | CHENGDU | 2023-03-22 | 2023-04-06 | 15 | 18 | 22 | laiku | 2023-04 |
847 | CHENGDU | 2023-03-22 | 2023-04-06 | 15 | 18 | 22 | laiku | 2023-04 |
848 | CHENGDU | 2023-03-22 | 2023-04-06 | 15 | 18 | 22 | laiku | 2023-04 |
644 rows × 8 columns
sns.barplot(x='year/month', y='actual_TT', data=Rail_CN)
<AxesSubplot:xlabel='year/month', ylabel='actual_TT'>
#Atlikus analizę pagal atvykimo laiką matome kad pastaraisias mėnesiais tranzito laikas kiek svyravo,
#tačiau balandžio mėnesį tranzito laikas sumažėjo ir šiuo metu yra mažesnis, nei siūlomas klientams (18-22), todėl
#būtų galima drąsiai mažinti tranzito laiką klientams iki 16-18d
Sea = offered_vs_actual[offered_vs_actual['Service'] == 'ML'].copy()
Sea.loc[:,['Service','CountryFrom','Uploading','MAX', 'actual_TT','uzsakymai']]
Service | CountryFrom | Uploading | MAX | actual_TT | uzsakymai | |
---|---|---|---|---|---|---|
0 | ML | CN | XIAMEN | 55 | 64 | pavėlavo |
1 | ML | CN | TIANJIN | 55 | 70 | pavėlavo |
2 | ML | CN | YANTIAN | 55 | 39 | laiku |
3 | ML | CN | YANTIAN | 55 | 39 | laiku |
4 | ML | CN | YANTIAN | 55 | 39 | laiku |
... | ... | ... | ... | ... | ... | ... |
971 | ML | TH | BANGKOK | 65 | 76 | pavėlavo |
972 | ML | TH | BANGKOK | 65 | 58 | laiku |
973 | ML | PH | MANILA | 65 | 65 | laiku |
974 | ML | PH | MANILA | 65 | 71 | pavėlavo |
977 | ML | IL | HAIFA | 60 | 53 | laiku |
332 rows × 6 columns
Sea['uzsakymai'].value_counts()
laiku 235 pavėlavo 97 Name: uzsakymai, dtype: int64
Sea_uzsakymai=Sea['uzsakymai'].value_counts()
Sea_uzsakymai.plot.pie(autopct='%1.1f%%', title = 'Sea užsakymų įvykdymas', colors= ['#9FE331', 'tomato'])
<AxesSubplot:title={'center':'Sea užsakymų įvykdymas'}, ylabel='uzsakymai'>
Sea.groupby('Uploading')['uzsakymai'].count().sort_values().plot(title='Bendras Sea užsakymų paskirstymas per uostus', kind='barh',figsize=(5,5),color='royalblue')
<AxesSubplot:title={'center':'Bendras Sea užsakymų paskirstymas per uostus'}, ylabel='Uploading'>
Sea.groupby('CountryFrom')['actual_TT'].mean().sort_values(ascending=False).plot(title='Faktinis tranzito laikas pagal uostus')
<AxesSubplot:title={'center':'Faktinis tranzito laikas pagal uostus'}, xlabel='CountryFrom'>
def sea_anksciau(s):
return s['MAX'] - s['actual_TT']
Sea['dienu_skirtumas'] = Sea.apply(sea_anksciau, axis = 'columns')
Sea.loc[:200,['Service','CountryFrom','Uploading','MIN','MAX', 'actual_TT','uzsakymai','dienu_skirtumas']]
Service | CountryFrom | Uploading | MIN | MAX | actual_TT | uzsakymai | dienu_skirtumas | |
---|---|---|---|---|---|---|---|---|
0 | ML | CN | XIAMEN | 50 | 55 | 64 | pavėlavo | -9 |
1 | ML | CN | TIANJIN | 50 | 55 | 70 | pavėlavo | -15 |
2 | ML | CN | YANTIAN | 50 | 55 | 39 | laiku | 16 |
3 | ML | CN | YANTIAN | 50 | 55 | 39 | laiku | 16 |
4 | ML | CN | YANTIAN | 50 | 55 | 39 | laiku | 16 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
196 | ML | CN | NINGBO | 50 | 55 | 50 | laiku | 5 |
197 | ML | CN | NINGBO | 50 | 55 | 50 | laiku | 5 |
198 | ML | CN | NINGBO | 50 | 55 | 50 | laiku | 5 |
199 | ML | CN | NINGBO | 50 | 55 | 50 | laiku | 5 |
200 | ML | CN | NINGBO | 50 | 55 | 50 | laiku | 5 |
201 rows × 8 columns
Sea.groupby('dienu_skirtumas')['Uploading'].count()
#žiūrime kaip išsibarstę atvykimai anksčiau bei vėlavimai kad nustatyti periodus
dienu_skirtumas -36 1 -32 2 -26 1 -20 2 -18 1 -15 5 -14 10 -13 7 -12 3 -11 4 -9 2 -8 4 -7 5 -6 5 -5 2 -4 19 -2 22 -1 2 0 6 1 4 2 1 3 31 4 1 5 20 6 26 7 3 8 17 9 22 10 6 11 21 12 15 13 5 14 3 15 21 16 13 17 8 18 6 19 1 20 4 23 1 Name: Uploading, dtype: int64
def sea_atvykimas(s):
if s['MAX'] - s['actual_TT'] >= 11:
return("atvyko daugiau nei 11 dienomis anksčiau")
elif 0 <= s['MAX'] - s['actual_TT'] < 11:
return("atvyko laiku")
else:
return("pavėlavo")
Sea['sea_atvykimas'] = Sea.apply(sea_atvykimas, axis='columns')
Sea.loc[:20,['Service','CountryFrom','Uploading','MAX', 'actual_TT','sea_atvykimas']]
Service | CountryFrom | Uploading | MAX | actual_TT | sea_atvykimas | |
---|---|---|---|---|---|---|
0 | ML | CN | XIAMEN | 55 | 64 | pavėlavo |
1 | ML | CN | TIANJIN | 55 | 70 | pavėlavo |
2 | ML | CN | YANTIAN | 55 | 39 | atvyko daugiau nei 11 dienomis anksčiau |
3 | ML | CN | YANTIAN | 55 | 39 | atvyko daugiau nei 11 dienomis anksčiau |
4 | ML | CN | YANTIAN | 55 | 39 | atvyko daugiau nei 11 dienomis anksčiau |
5 | ML | CN | YANTIAN | 55 | 39 | atvyko daugiau nei 11 dienomis anksčiau |
6 | ML | CN | YANTIAN | 55 | 39 | atvyko daugiau nei 11 dienomis anksčiau |
7 | ML | CN | YANTIAN | 55 | 39 | atvyko daugiau nei 11 dienomis anksčiau |
8 | ML | CN | YANTIAN | 55 | 39 | atvyko daugiau nei 11 dienomis anksčiau |
9 | ML | CN | YANTIAN | 55 | 39 | atvyko daugiau nei 11 dienomis anksčiau |
10 | ML | CN | YANTIAN | 55 | 39 | atvyko daugiau nei 11 dienomis anksčiau |
11 | ML | CN | YANTIAN | 55 | 39 | atvyko daugiau nei 11 dienomis anksčiau |
12 | ML | CN | YANTIAN | 55 | 39 | atvyko daugiau nei 11 dienomis anksčiau |
13 | ML | CN | YANTIAN | 55 | 39 | atvyko daugiau nei 11 dienomis anksčiau |
14 | ML | CN | NINGBO | 55 | 49 | atvyko laiku |
15 | ML | CN | YANTIAN | 55 | 69 | pavėlavo |
16 | ML | CN | YANTIAN | 55 | 69 | pavėlavo |
17 | ML | CN | YANTIAN | 55 | 69 | pavėlavo |
18 | ML | CN | YANTIAN | 55 | 69 | pavėlavo |
19 | ML | CN | YANTIAN | 55 | 69 | pavėlavo |
20 | ML | CN | YANTIAN | 55 | 69 | pavėlavo |
Sea['sea_atvykimas'].value_counts()
atvyko laiku 137 atvyko daugiau nei 11 dienomis anksčiau 98 pavėlavo 97 Name: sea_atvykimas, dtype: int64
Detalus_sea=Sea['sea_atvykimas'].value_counts()
Detalus_sea.plot.pie(autopct='%1.1f%%', title = 'Detalesnė Sea užsakymų analizė', colors= ['#9FE331', 'tomato', 'plum', '#3CA4D8'])
<AxesSubplot:title={'center':'Detalesnė Sea užsakymų analizė'}, ylabel='sea_atvykimas'>
Sea_a.groupby('Uploading')['uzsakymai'].count().sort_values().plot(title='Sea anksčiau atvykusių užsakymų paskirstymas per uostus', kind='barh',figsize=(5,5),color='royalblue')
<AxesSubplot:title={'center':'Sea anksčiau atvykusių užsakymų paskirstymas per uostus'}, ylabel='Uploading'>
Sea_anksciau = Sea[Sea['dienu_skirtumas'] >=0].sort_values(by='dienu_skirtumas',ascending=False)
Sea_a =Sea_anksciau.set_index(['Uploading', 'dienu_skirtumas','actual_TT'])
Sea_a.head(15)
Service | CountryFrom | Ordered | ATD | ATA | MIN | MAX | uzsakymai | sea_atvykimas | |||
---|---|---|---|---|---|---|---|---|---|---|---|
Uploading | dienu_skirtumas | actual_TT | |||||||||
KEELUNG | 23 | 42 | ML | TW | 2023-01-04 | 2023-01-26 | 2023-03-09 | 55 | 65 | laiku | atvyko daugiau nei 11 dienomis anksčiau |
YANTIAN | 20 | 35 | ML | CN | 2022-12-19 | 2023-02-03 | 2023-03-10 | 50 | 55 | laiku | atvyko daugiau nei 11 dienomis anksčiau |
KAOHSIUNG | 20 | 45 | ML | TW | 2022-12-08 | 2022-12-30 | 2023-02-13 | 55 | 65 | laiku | atvyko daugiau nei 11 dienomis anksčiau |
45 | ML | TW | 2022-12-07 | 2022-12-30 | 2023-02-13 | 55 | 65 | laiku | atvyko daugiau nei 11 dienomis anksčiau | ||
45 | ML | TW | 2022-12-06 | 2022-12-30 | 2023-02-13 | 55 | 65 | laiku | atvyko daugiau nei 11 dienomis anksčiau | ||
19 | 46 | ML | TW | 2022-10-11 | 2022-10-31 | 2022-12-16 | 55 | 65 | laiku | atvyko daugiau nei 11 dienomis anksčiau | |
18 | 47 | ML | TW | 2022-12-12 | 2023-01-11 | 2023-02-27 | 55 | 65 | laiku | atvyko daugiau nei 11 dienomis anksčiau | |
NEW YORK | 18 | 32 | ML | US | 2022-10-07 | 2022-10-30 | 2022-12-01 | 40 | 50 | laiku | atvyko daugiau nei 11 dienomis anksčiau |
NHAVA SHEVA | 18 | 42 | ML | IN | 2022-11-22 | 2022-12-12 | 2023-01-23 | 50 | 60 | laiku | atvyko daugiau nei 11 dienomis anksčiau |
KAOHSIUNG | 18 | 47 | ML | TW | 2022-12-22 | 2023-01-11 | 2023-02-27 | 55 | 65 | laiku | atvyko daugiau nei 11 dienomis anksčiau |
47 | ML | TW | 2022-12-14 | 2023-01-11 | 2023-02-27 | 55 | 65 | laiku | atvyko daugiau nei 11 dienomis anksčiau | ||
47 | ML | TW | 2022-12-07 | 2023-01-11 | 2023-02-27 | 55 | 65 | laiku | atvyko daugiau nei 11 dienomis anksčiau | ||
YANTIAN | 17 | 38 | ML | CN | 2022-09-28 | 2022-11-29 | 2023-01-06 | 50 | 55 | laiku | atvyko daugiau nei 11 dienomis anksčiau |
38 | ML | CN | 2022-11-04 | 2022-11-29 | 2023-01-06 | 50 | 55 | laiku | atvyko daugiau nei 11 dienomis anksčiau | ||
NHAVA SHEVA | 17 | 43 | ML | IN | 2022-12-01 | 2022-12-11 | 2023-01-23 | 50 | 60 | laiku | atvyko daugiau nei 11 dienomis anksčiau |
def sea_vėlavimas(s):
if s['dienu_skirtumas'] <= -21:
return("virš 3 savaičių vėlavimas")
elif -21 < s['dienu_skirtumas'] <= -14:
return("vėlavimas nuo 2 iki 3 savaičių")
elif -14 < s['dienu_skirtumas'] <= -7:
return("vėlavimas nuo 1 iki 2 savaičių")
elif -7 < s['dienu_skirtumas'] <= -1:
return("vėlavimas iki 1 savaitės")
else:
return("laiku")
Sea['sea_vėlavimas'] = Sea.apply(sea_vėlavimas, axis='columns')
Sea.loc[:300,['Service','CountryFrom','Uploading','MAX', 'MIN','actual_TT','dienu_skirtumas', 'sea_vėlavimas']]
Service | CountryFrom | Uploading | MAX | MIN | actual_TT | dienu_skirtumas | sea_vėlavimas | |
---|---|---|---|---|---|---|---|---|
0 | ML | CN | XIAMEN | 55 | 50 | 64 | -9 | vėlavimas nuo 1 iki 2 savaičių |
1 | ML | CN | TIANJIN | 55 | 50 | 70 | -15 | vėlavimas nuo 2 iki 3 savaičių |
2 | ML | CN | YANTIAN | 55 | 50 | 39 | 16 | laiku |
3 | ML | CN | YANTIAN | 55 | 50 | 39 | 16 | laiku |
4 | ML | CN | YANTIAN | 55 | 50 | 39 | 16 | laiku |
... | ... | ... | ... | ... | ... | ... | ... | ... |
200 | ML | CN | NINGBO | 55 | 50 | 50 | 5 | laiku |
201 | ML | CN | QINGDAO | 55 | 50 | 68 | -13 | vėlavimas nuo 1 iki 2 savaičių |
202 | ML | JP | Osaka | 65 | 55 | 101 | -36 | virš 3 savaičių vėlavimas |
203 | ML | JP | KOBE | 65 | 55 | 80 | -15 | vėlavimas nuo 2 iki 3 savaičių |
204 | ML | JP | KOBE | 65 | 55 | 91 | -26 | virš 3 savaičių vėlavimas |
205 rows × 8 columns
Sea_vėlavimas = Sea['sea_vėlavimas'].value_counts()
Sea['sea_vėlavimas'].value_counts()
laiku 235 vėlavimas iki 1 savaitės 50 vėlavimas nuo 1 iki 2 savaičių 25 vėlavimas nuo 2 iki 3 savaičių 18 virš 3 savaičių vėlavimas 4 Name: sea_vėlavimas, dtype: int64
Sea_vėlavimas.plot.pie(autopct='%1.1f%%', title = 'Sea vėlavimų užsakymų analizė', colors= ['#9FE331', 'gold', 'plum', '#3CA4D8', 'tomato'])
<AxesSubplot:title={'center':'Sea vėlavimų užsakymų analizė'}, ylabel='sea_vėlavimas'>
Sea_d.groupby('Uploading')['uzsakymai'].count().sort_values().plot(title='Sea vėluojančių užsakymų paskirstymas per uostus', kind='barh',figsize=(5,5),color='royalblue')
<AxesSubplot:title={'center':'Sea vėluojančių užsakymų paskirstymas per uostus'}, ylabel='Uploading'>
Sea_delay = Sea[Sea['dienu_skirtumas'] <0].sort_values(by='dienu_skirtumas',ascending=True)
Sea_d =Sea_delay.set_index(['Uploading', 'dienu_skirtumas', 'sea_vėlavimas'])
Sea_d.head(15)
Service | CountryFrom | Ordered | ATD | ATA | actual_TT | MIN | MAX | uzsakymai | sea_atvykimas | |||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Uploading | dienu_skirtumas | sea_vėlavimas | ||||||||||
Osaka | -36 | virš 3 savaičių vėlavimas | ML | JP | 2022-06-22 | 2022-07-08 | 2022-10-17 | 101 | 55 | 65 | pavėlavo | pavėlavo |
NEW YORK | -32 | virš 3 savaičių vėlavimas | ML | US | 2022-07-07 | 2022-08-19 | 2022-11-09 | 82 | 40 | 50 | pavėlavo | pavėlavo |
virš 3 savaičių vėlavimas | ML | CA | 2022-07-25 | 2022-08-19 | 2022-11-09 | 82 | 40 | 50 | pavėlavo | pavėlavo | ||
KOBE | -26 | virš 3 savaičių vėlavimas | ML | JP | 2022-10-06 | 2022-10-20 | 2023-01-19 | 91 | 55 | 65 | pavėlavo | pavėlavo |
HONG KONG | -20 | vėlavimas nuo 2 iki 3 savaičių | ML | HK | 2022-07-20 | 2022-08-01 | 2022-10-25 | 85 | 55 | 65 | pavėlavo | pavėlavo |
QINGDAO | -20 | vėlavimas nuo 2 iki 3 savaičių | ML | CN | 2022-11-09 | 2022-12-04 | 2023-02-17 | 75 | 50 | 55 | pavėlavo | pavėlavo |
XINGANG | -18 | vėlavimas nuo 2 iki 3 savaičių | ML | CN | 2022-11-23 | 2022-12-12 | 2023-02-23 | 73 | 50 | 55 | pavėlavo | pavėlavo |
HONG KONG | -15 | vėlavimas nuo 2 iki 3 savaičių | ML | HK | 2022-06-30 | 2022-08-16 | 2022-11-04 | 80 | 55 | 65 | pavėlavo | pavėlavo |
TIANJIN | -15 | vėlavimas nuo 2 iki 3 savaičių | ML | CN | 2022-07-19 | 2022-08-08 | 2022-10-17 | 70 | 50 | 55 | pavėlavo | pavėlavo |
HONG KONG | -15 | vėlavimas nuo 2 iki 3 savaičių | ML | HK | 2022-08-08 | 2022-08-16 | 2022-11-04 | 80 | 55 | 65 | pavėlavo | pavėlavo |
KOBE | -15 | vėlavimas nuo 2 iki 3 savaičių | ML | JP | 2022-09-02 | 2022-09-17 | 2022-12-06 | 80 | 55 | 65 | pavėlavo | pavėlavo |
BUSAN | -15 | vėlavimas nuo 2 iki 3 savaičių | ML | KR | 2022-12-16 | 2023-01-07 | 2023-03-28 | 80 | 55 | 65 | pavėlavo | pavėlavo |
NEW YORK | -14 | vėlavimas nuo 2 iki 3 savaičių | ML | US | 2022-08-25 | 2022-09-28 | 2022-12-01 | 64 | 40 | 50 | pavėlavo | pavėlavo |
YANTIAN | -14 | vėlavimas nuo 2 iki 3 savaičių | ML | CN | 2022-07-19 | 2022-08-23 | 2022-10-31 | 69 | 50 | 55 | pavėlavo | pavėlavo |
vėlavimas nuo 2 iki 3 savaičių | ML | CN | 2022-08-01 | 2022-08-23 | 2022-10-31 | 69 | 50 | 55 | pavėlavo | pavėlavo |
Sea.groupby(['CountryFrom', 'Uploading']).agg({'CountryFrom':'count','actual_TT':'mean', 'MAX':'max'})
CountryFrom | actual_TT | MAX | ||
---|---|---|---|---|
CountryFrom | Uploading | |||
CA | NEW YORK | 2 | 63.500000 | 50 |
CN | BEIJING | 1 | 67.000000 | 55 |
NANSHA | 22 | 56.454545 | 55 | |
NINGBO | 75 | 51.146667 | 55 | |
QINGDAO | 3 | 68.000000 | 55 | |
SHANGHAI | 4 | 60.000000 | 55 | |
TIANJIN | 3 | 68.000000 | 55 | |
XIAMEN | 5 | 57.000000 | 55 | |
XINGANG | 1 | 73.000000 | 55 | |
YANTIAN | 88 | 47.659091 | 55 | |
HK | HONG KONG | 34 | 59.205882 | 65 |
IL | HAIFA | 1 | 53.000000 | 60 |
IN | NHAVA SHEVA | 10 | 49.200000 | 60 |
JP | KOBE | 2 | 85.500000 | 65 |
Osaka | 1 | 101.000000 | 65 | |
KR | BUSAN | 6 | 71.333333 | 65 |
MY | PENANG | 1 | 60.000000 | 65 |
PH | MANILA | 2 | 68.000000 | 65 |
TH | BANGKOK | 2 | 67.000000 | 65 |
TW | KAOHSIUNG | 36 | 53.305556 | 65 |
KEELUNG | 6 | 52.000000 | 65 | |
US | LOS ANGELES | 1 | 44.000000 | 50 |
NEW YORK | 14 | 52.142857 | 50 | |
VN | HO CHI MINH | 12 | 68.416667 | 65 |
sea_min = Sea['actual_TT'].min(axis=0)
sea_min
32
Sea_China = Sea[Sea['CountryFrom'] == 'CN'].copy()
Sea_China.sort_values(by='ATA',ascending = False)
Service | CountryFrom | Uploading | Ordered | ATD | ATA | actual_TT | MIN | MAX | uzsakymai | dienu_skirtumas | sea_atvykimas | sea_vėlavimas | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
201 | ML | CN | QINGDAO | 2023-01-02 | 2023-01-27 | 2023-04-05 | 68 | 50 | 55 | pavėlavo | -13 | pavėlavo | vėlavimas nuo 1 iki 2 savaičių |
192 | ML | CN | NINGBO | 2023-01-02 | 2023-01-30 | 2023-03-21 | 50 | 50 | 55 | laiku | 5 | atvyko laiku | laiku |
184 | ML | CN | NINGBO | 2022-12-15 | 2023-01-30 | 2023-03-21 | 50 | 50 | 55 | laiku | 5 | atvyko laiku | laiku |
185 | ML | CN | NINGBO | 2022-12-15 | 2023-01-30 | 2023-03-21 | 50 | 50 | 55 | laiku | 5 | atvyko laiku | laiku |
186 | ML | CN | NINGBO | 2022-12-19 | 2023-01-30 | 2023-03-21 | 50 | 50 | 55 | laiku | 5 | atvyko laiku | laiku |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
9 | ML | CN | YANTIAN | 2022-08-16 | 2022-09-15 | 2022-10-24 | 39 | 50 | 55 | laiku | 16 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
10 | ML | CN | YANTIAN | 2022-08-17 | 2022-09-15 | 2022-10-24 | 39 | 50 | 55 | laiku | 16 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
12 | ML | CN | YANTIAN | 2022-08-22 | 2022-09-15 | 2022-10-24 | 39 | 50 | 55 | laiku | 16 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
13 | ML | CN | YANTIAN | 2022-08-24 | 2022-09-15 | 2022-10-24 | 39 | 50 | 55 | laiku | 16 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
1 | ML | CN | TIANJIN | 2022-07-19 | 2022-08-08 | 2022-10-17 | 70 | 50 | 55 | pavėlavo | -15 | pavėlavo | vėlavimas nuo 2 iki 3 savaičių |
202 rows × 13 columns
Sea_China['actual_TT'].mean()
#turime daug CN uostų, matome kad TT vidurkis atitinka pagal pasiūlymą, tačiau būtų galima išskirti pagrindinius tranzito
# uostus nuo outportų ir iškirstyti tranzito laiką - pvz QINGDAO,TIANJIN,XINGANG, BEIJING galima būtų ilginti TT iki
# 60-70d, NANSHA uostą- kolkas stebėti, o NINGBO bei YANTIAN uostus būtų galima trumptinti iki 45-50d
51.21287128712871
Sea[Sea['Uploading'] == 'NANSHA'].sort_values(by='ATA',ascending = False)
Service | CountryFrom | Uploading | Ordered | ATD | ATA | actual_TT | MIN | MAX | uzsakymai | dienu_skirtumas | sea_atvykimas | sea_vėlavimas | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
183 | ML | CN | NANSHA | 2023-01-06 | 2023-01-20 | 2023-03-13 | 52 | 50 | 55 | laiku | 3 | atvyko laiku | laiku |
182 | ML | CN | NANSHA | 2023-01-05 | 2023-01-20 | 2023-03-13 | 52 | 50 | 55 | laiku | 3 | atvyko laiku | laiku |
181 | ML | CN | NANSHA | 2023-01-05 | 2023-01-20 | 2023-03-13 | 52 | 50 | 55 | laiku | 3 | atvyko laiku | laiku |
180 | ML | CN | NANSHA | 2023-01-04 | 2023-01-20 | 2023-03-13 | 52 | 50 | 55 | laiku | 3 | atvyko laiku | laiku |
179 | ML | CN | NANSHA | 2023-01-04 | 2023-01-20 | 2023-03-13 | 52 | 50 | 55 | laiku | 3 | atvyko laiku | laiku |
178 | ML | CN | NANSHA | 2023-01-04 | 2023-01-20 | 2023-03-13 | 52 | 50 | 55 | laiku | 3 | atvyko laiku | laiku |
177 | ML | CN | NANSHA | 2022-12-30 | 2023-01-20 | 2023-03-13 | 52 | 50 | 55 | laiku | 3 | atvyko laiku | laiku |
176 | ML | CN | NANSHA | 2022-12-19 | 2023-01-20 | 2023-03-13 | 52 | 50 | 55 | laiku | 3 | atvyko laiku | laiku |
149 | ML | CN | NANSHA | 2022-11-18 | 2023-01-01 | 2023-03-01 | 59 | 50 | 55 | pavėlavo | -4 | pavėlavo | vėlavimas iki 1 savaitės |
161 | ML | CN | NANSHA | 2022-12-14 | 2023-01-01 | 2023-03-01 | 59 | 50 | 55 | pavėlavo | -4 | pavėlavo | vėlavimas iki 1 savaitės |
160 | ML | CN | NANSHA | 2022-12-14 | 2023-01-01 | 2023-03-01 | 59 | 50 | 55 | pavėlavo | -4 | pavėlavo | vėlavimas iki 1 savaitės |
148 | ML | CN | NANSHA | 2022-11-16 | 2023-01-01 | 2023-03-01 | 59 | 50 | 55 | pavėlavo | -4 | pavėlavo | vėlavimas iki 1 savaitės |
158 | ML | CN | NANSHA | 2022-12-07 | 2023-01-01 | 2023-03-01 | 59 | 50 | 55 | pavėlavo | -4 | pavėlavo | vėlavimas iki 1 savaitės |
157 | ML | CN | NANSHA | 2022-12-07 | 2023-01-01 | 2023-03-01 | 59 | 50 | 55 | pavėlavo | -4 | pavėlavo | vėlavimas iki 1 savaitės |
156 | ML | CN | NANSHA | 2022-12-06 | 2023-01-01 | 2023-03-01 | 59 | 50 | 55 | pavėlavo | -4 | pavėlavo | vėlavimas iki 1 savaitės |
155 | ML | CN | NANSHA | 2022-12-05 | 2023-01-01 | 2023-03-01 | 59 | 50 | 55 | pavėlavo | -4 | pavėlavo | vėlavimas iki 1 savaitės |
154 | ML | CN | NANSHA | 2022-12-05 | 2023-01-01 | 2023-03-01 | 59 | 50 | 55 | pavėlavo | -4 | pavėlavo | vėlavimas iki 1 savaitės |
153 | ML | CN | NANSHA | 2022-12-02 | 2023-01-01 | 2023-03-01 | 59 | 50 | 55 | pavėlavo | -4 | pavėlavo | vėlavimas iki 1 savaitės |
152 | ML | CN | NANSHA | 2022-12-01 | 2023-01-01 | 2023-03-01 | 59 | 50 | 55 | pavėlavo | -4 | pavėlavo | vėlavimas iki 1 savaitės |
151 | ML | CN | NANSHA | 2022-11-29 | 2023-01-01 | 2023-03-01 | 59 | 50 | 55 | pavėlavo | -4 | pavėlavo | vėlavimas iki 1 savaitės |
150 | ML | CN | NANSHA | 2022-11-24 | 2023-01-01 | 2023-03-01 | 59 | 50 | 55 | pavėlavo | -4 | pavėlavo | vėlavimas iki 1 savaitės |
159 | ML | CN | NANSHA | 2022-12-08 | 2023-01-01 | 2023-03-01 | 59 | 50 | 55 | pavėlavo | -4 | pavėlavo | vėlavimas iki 1 savaitės |
Sea[Sea['CountryFrom'] == 'JP'].sort_values(by='ATA',ascending = False) # visi vėlavo- rekomenduoju keisti TT į ~80-85d
Service | CountryFrom | Uploading | Ordered | ATD | ATA | actual_TT | MIN | MAX | uzsakymai | dienu_skirtumas | sea_atvykimas | sea_vėlavimas | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
204 | ML | JP | KOBE | 2022-10-06 | 2022-10-20 | 2023-01-19 | 91 | 55 | 65 | pavėlavo | -26 | pavėlavo | virš 3 savaičių vėlavimas |
203 | ML | JP | KOBE | 2022-09-02 | 2022-09-17 | 2022-12-06 | 80 | 55 | 65 | pavėlavo | -15 | pavėlavo | vėlavimas nuo 2 iki 3 savaičių |
202 | ML | JP | Osaka | 2022-06-22 | 2022-07-08 | 2022-10-17 | 101 | 55 | 65 | pavėlavo | -36 | pavėlavo | virš 3 savaičių vėlavimas |
Sea[Sea['CountryFrom'] == 'KR'].sort_values(by='ATA',ascending = False) # visi vėlavo- rekomenduoju keisti TT į 70-75d
Service | CountryFrom | Uploading | Ordered | ATD | ATA | actual_TT | MIN | MAX | uzsakymai | dienu_skirtumas | sea_atvykimas | sea_vėlavimas | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
970 | ML | KR | BUSAN | 2022-12-16 | 2023-01-07 | 2023-03-28 | 80 | 55 | 65 | pavėlavo | -15 | pavėlavo | vėlavimas nuo 2 iki 3 savaičių |
969 | ML | KR | BUSAN | 2022-12-07 | 2022-12-18 | 2023-02-23 | 67 | 55 | 65 | pavėlavo | -2 | pavėlavo | vėlavimas iki 1 savaitės |
968 | ML | KR | BUSAN | 2022-11-30 | 2022-12-18 | 2023-02-22 | 66 | 55 | 65 | pavėlavo | -1 | pavėlavo | vėlavimas iki 1 savaitės |
967 | ML | KR | BUSAN | 2022-10-18 | 2022-11-12 | 2023-01-23 | 72 | 55 | 65 | pavėlavo | -7 | pavėlavo | vėlavimas nuo 1 iki 2 savaičių |
966 | ML | KR | BUSAN | 2022-10-12 | 2022-11-02 | 2023-01-11 | 70 | 55 | 65 | pavėlavo | -5 | pavėlavo | vėlavimas iki 1 savaitės |
965 | ML | KR | BUSAN | 2022-09-21 | 2022-10-11 | 2022-12-23 | 73 | 55 | 65 | pavėlavo | -8 | pavėlavo | vėlavimas nuo 1 iki 2 savaičių |
Sea[Sea['CountryFrom'] == 'VN'].sort_values(by='ATA',ascending = False) # didžioji dalis krovinių vėlavo, tame tarpe
# ir paskutiniai atvykimai, todėl rekomenduoju ilginti TT iki 65-70d
Service | CountryFrom | Uploading | Ordered | ATD | ATA | actual_TT | MIN | MAX | uzsakymai | dienu_skirtumas | sea_atvykimas | sea_vėlavimas | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
951 | ML | VN | HO CHI MINH | 2023-01-16 | 2023-01-24 | 2023-04-05 | 71 | 55 | 65 | pavėlavo | -6 | pavėlavo | vėlavimas iki 1 savaitės |
949 | ML | VN | HO CHI MINH | 2023-01-02 | 2023-01-09 | 2023-03-28 | 78 | 55 | 65 | pavėlavo | -13 | pavėlavo | vėlavimas nuo 1 iki 2 savaičių |
950 | ML | VN | HO CHI MINH | 2023-01-03 | 2023-01-18 | 2023-03-28 | 69 | 55 | 65 | pavėlavo | -4 | pavėlavo | vėlavimas iki 1 savaitės |
947 | ML | VN | HO CHI MINH | 2022-11-21 | 2022-12-21 | 2023-03-07 | 76 | 55 | 65 | pavėlavo | -11 | pavėlavo | vėlavimas nuo 1 iki 2 savaičių |
948 | ML | VN | HO CHI MINH | 2022-12-16 | 2022-12-27 | 2023-03-07 | 70 | 55 | 65 | pavėlavo | -5 | pavėlavo | vėlavimas iki 1 savaitės |
946 | ML | VN | HO CHI MINH | 2022-11-21 | 2022-11-30 | 2023-02-02 | 64 | 55 | 65 | laiku | 1 | atvyko laiku | laiku |
945 | ML | VN | HO CHI MINH | 2022-11-03 | 2022-11-15 | 2023-01-11 | 57 | 55 | 65 | laiku | 8 | atvyko laiku | laiku |
944 | ML | VN | HO CHI MINH | 2022-10-12 | 2022-10-17 | 2022-12-29 | 73 | 55 | 65 | pavėlavo | -8 | pavėlavo | vėlavimas nuo 1 iki 2 savaičių |
942 | ML | VN | HO CHI MINH | 2022-09-05 | 2022-09-19 | 2022-11-25 | 67 | 55 | 65 | pavėlavo | -2 | pavėlavo | vėlavimas iki 1 savaitės |
943 | ML | VN | HO CHI MINH | 2022-09-12 | 2022-09-19 | 2022-11-25 | 67 | 55 | 65 | pavėlavo | -2 | pavėlavo | vėlavimas iki 1 savaitės |
940 | ML | VN | HO CHI MINH | 2022-08-04 | 2022-08-26 | 2022-10-31 | 66 | 55 | 65 | pavėlavo | -1 | pavėlavo | vėlavimas iki 1 savaitės |
941 | ML | VN | HO CHI MINH | 2022-08-22 | 2022-08-29 | 2022-10-31 | 63 | 55 | 65 | laiku | 2 | atvyko laiku | laiku |
Sea[Sea['CountryFrom'] == 'US'].sort_values(by='ATA',ascending = False)
# matome kad didesnė dalis krovinių vėluoja atvykti, surūšiavus pagal atvykimo datą matome kad paskutiniai kroviniai
# arba vėlavo keliomis dienomis, arba atvyko anksčiau, vidutinis TT laikas buvo viršytas tik 2 dienomis, todėl
# rekomenduoju toliau stebėti TT
Service | CountryFrom | Uploading | Ordered | ATD | ATA | actual_TT | MIN | MAX | uzsakymai | dienu_skirtumas | sea_atvykimas | sea_vėlavimas | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
863 | ML | US | NEW YORK | 2022-12-27 | 2023-02-10 | 2023-04-05 | 54 | 40 | 50 | pavėlavo | -4 | pavėlavo | vėlavimas iki 1 savaitės |
862 | ML | US | NEW YORK | 2022-11-30 | 2023-01-12 | 2023-03-07 | 54 | 40 | 50 | pavėlavo | -4 | pavėlavo | vėlavimas iki 1 savaitės |
861 | ML | US | NEW YORK | 2022-11-18 | 2022-12-30 | 2023-02-17 | 49 | 40 | 50 | laiku | 1 | atvyko laiku | laiku |
860 | ML | US | NEW YORK | 2022-11-04 | 2022-11-27 | 2023-01-04 | 38 | 40 | 50 | laiku | 12 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
858 | ML | US | NEW YORK | 2022-09-15 | 2022-10-13 | 2022-12-06 | 54 | 40 | 50 | pavėlavo | -4 | pavėlavo | vėlavimas iki 1 savaitės |
859 | ML | US | NEW YORK | 2022-09-21 | 2022-10-13 | 2022-12-06 | 54 | 40 | 50 | pavėlavo | -4 | pavėlavo | vėlavimas iki 1 savaitės |
856 | ML | US | NEW YORK | 2022-08-25 | 2022-09-28 | 2022-12-01 | 64 | 40 | 50 | pavėlavo | -14 | pavėlavo | vėlavimas nuo 2 iki 3 savaičių |
857 | ML | US | NEW YORK | 2022-10-07 | 2022-10-30 | 2022-12-01 | 32 | 40 | 50 | laiku | 18 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
853 | ML | US | NEW YORK | 2022-07-07 | 2022-08-19 | 2022-11-09 | 82 | 40 | 50 | pavėlavo | -32 | pavėlavo | virš 3 savaičių vėlavimas |
854 | ML | US | NEW YORK | 2022-07-13 | 2022-09-09 | 2022-11-09 | 61 | 40 | 50 | pavėlavo | -11 | pavėlavo | vėlavimas nuo 1 iki 2 savaičių |
855 | ML | US | NEW YORK | 2022-08-23 | 2022-09-09 | 2022-11-09 | 61 | 40 | 50 | pavėlavo | -11 | pavėlavo | vėlavimas nuo 1 iki 2 savaičių |
851 | ML | US | LOS ANGELES | 2022-08-12 | 2022-09-20 | 2022-11-03 | 44 | 40 | 50 | laiku | 6 | atvyko laiku | laiku |
852 | ML | US | NEW YORK | 2022-09-02 | 2022-09-21 | 2022-11-03 | 43 | 40 | 50 | laiku | 7 | atvyko laiku | laiku |
849 | ML | US | NEW YORK | 2022-07-27 | 2022-09-09 | 2022-10-21 | 42 | 40 | 50 | laiku | 8 | atvyko laiku | laiku |
850 | ML | US | NEW YORK | 2022-08-17 | 2022-09-09 | 2022-10-21 | 42 | 40 | 50 | laiku | 8 | atvyko laiku | laiku |
Sea[Sea['CountryFrom'] == 'IN'].sort_values(by='ATA',ascending = False)
#matome kad vėlavo tik vienas krovinys, kuris atvyko seniausiai,visi likę kroviniai atvyko anksčiau, todėl
# rekomenduoju mažinti TT klientams iki 45-50d
Service | CountryFrom | Uploading | Ordered | ATD | ATA | actual_TT | MIN | MAX | uzsakymai | dienu_skirtumas | sea_atvykimas | sea_vėlavimas | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
962 | ML | IN | NHAVA SHEVA | 2023-01-23 | 2023-02-14 | 2023-04-05 | 50 | 50 | 60 | laiku | 10 | atvyko laiku | laiku |
963 | ML | IN | NHAVA SHEVA | 2023-01-25 | 2023-02-14 | 2023-04-05 | 50 | 50 | 60 | laiku | 10 | atvyko laiku | laiku |
961 | ML | IN | NHAVA SHEVA | 2022-12-27 | 2023-01-22 | 2023-03-07 | 44 | 50 | 60 | laiku | 16 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
958 | ML | IN | NHAVA SHEVA | 2022-11-11 | 2022-12-02 | 2023-01-23 | 52 | 50 | 60 | laiku | 8 | atvyko laiku | laiku |
959 | ML | IN | NHAVA SHEVA | 2022-11-22 | 2022-12-12 | 2023-01-23 | 42 | 50 | 60 | laiku | 18 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
960 | ML | IN | NHAVA SHEVA | 2022-12-01 | 2022-12-11 | 2023-01-23 | 43 | 50 | 60 | laiku | 17 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
957 | ML | IN | NHAVA SHEVA | 2022-09-26 | 2022-10-30 | 2022-12-16 | 47 | 50 | 60 | laiku | 13 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
956 | ML | IN | NHAVA SHEVA | 2022-09-16 | 2022-10-09 | 2022-11-25 | 47 | 50 | 60 | laiku | 13 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
955 | ML | IN | NHAVA SHEVA | 2022-08-26 | 2022-09-26 | 2022-11-15 | 50 | 50 | 60 | laiku | 10 | atvyko laiku | laiku |
954 | ML | IN | NHAVA SHEVA | 2022-08-04 | 2022-09-04 | 2022-11-10 | 67 | 50 | 60 | pavėlavo | -7 | pavėlavo | vėlavimas nuo 1 iki 2 savaičių |
Sea[Sea['CountryFrom'] == 'TW'].sort_values(by='ATA',ascending = False)
#visi kroviniai atvyko anksčiau laiko, rekomenduoju mažinti tranzitinį laiką- 50-55d
Service | CountryFrom | Uploading | Ordered | ATD | ATA | actual_TT | MIN | MAX | uzsakymai | dienu_skirtumas | sea_atvykimas | sea_vėlavimas | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
939 | ML | TW | KAOHSIUNG | 2023-01-18 | 2023-02-10 | 2023-04-05 | 54 | 55 | 65 | laiku | 11 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
938 | ML | TW | KAOHSIUNG | 2023-01-17 | 2023-02-10 | 2023-04-05 | 54 | 55 | 65 | laiku | 11 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
937 | ML | TW | KAOHSIUNG | 2023-01-17 | 2023-02-10 | 2023-04-05 | 54 | 55 | 65 | laiku | 11 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
936 | ML | TW | KAOHSIUNG | 2023-01-16 | 2023-02-10 | 2023-04-05 | 54 | 55 | 65 | laiku | 11 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
935 | ML | TW | KAOHSIUNG | 2023-01-13 | 2023-02-10 | 2023-04-05 | 54 | 55 | 65 | laiku | 11 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
934 | ML | TW | KEELUNG | 2023-01-10 | 2023-02-01 | 2023-03-21 | 48 | 55 | 65 | laiku | 17 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
932 | ML | TW | KAOHSIUNG | 2022-12-29 | 2023-01-14 | 2023-03-09 | 54 | 55 | 65 | laiku | 11 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
931 | ML | TW | KAOHSIUNG | 2022-12-23 | 2023-01-14 | 2023-03-09 | 54 | 55 | 65 | laiku | 11 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
930 | ML | TW | KAOHSIUNG | 2022-12-21 | 2023-01-14 | 2023-03-09 | 54 | 55 | 65 | laiku | 11 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
933 | ML | TW | KEELUNG | 2023-01-04 | 2023-01-26 | 2023-03-09 | 42 | 55 | 65 | laiku | 23 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
929 | ML | TW | KEELUNG | 2022-12-13 | 2023-01-04 | 2023-03-07 | 62 | 55 | 65 | laiku | 3 | atvyko laiku | laiku |
928 | ML | TW | KAOHSIUNG | 2022-12-22 | 2023-01-11 | 2023-02-27 | 47 | 55 | 65 | laiku | 18 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
927 | ML | TW | KAOHSIUNG | 2022-12-14 | 2023-01-11 | 2023-02-27 | 47 | 55 | 65 | laiku | 18 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
926 | ML | TW | KAOHSIUNG | 2022-12-12 | 2023-01-11 | 2023-02-27 | 47 | 55 | 65 | laiku | 18 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
925 | ML | TW | KAOHSIUNG | 2022-12-07 | 2023-01-11 | 2023-02-27 | 47 | 55 | 65 | laiku | 18 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
924 | ML | TW | KAOHSIUNG | 2022-12-08 | 2022-12-30 | 2023-02-13 | 45 | 55 | 65 | laiku | 20 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
923 | ML | TW | KAOHSIUNG | 2022-12-07 | 2022-12-30 | 2023-02-13 | 45 | 55 | 65 | laiku | 20 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
922 | ML | TW | KAOHSIUNG | 2022-12-06 | 2022-12-30 | 2023-02-13 | 45 | 55 | 65 | laiku | 20 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
921 | ML | TW | KEELUNG | 2022-11-23 | 2022-12-22 | 2023-02-10 | 50 | 55 | 65 | laiku | 15 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
920 | ML | TW | KAOHSIUNG | 2022-11-10 | 2022-11-28 | 2023-01-19 | 52 | 55 | 65 | laiku | 13 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
919 | ML | TW | KAOHSIUNG | 2022-11-09 | 2022-11-28 | 2023-01-19 | 52 | 55 | 65 | laiku | 13 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
918 | ML | TW | KAOHSIUNG | 2022-11-08 | 2022-11-28 | 2023-01-19 | 52 | 55 | 65 | laiku | 13 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
917 | ML | TW | KAOHSIUNG | 2022-11-03 | 2022-11-19 | 2023-01-11 | 53 | 55 | 65 | laiku | 12 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
916 | ML | TW | KAOHSIUNG | 2022-11-03 | 2022-11-19 | 2023-01-11 | 53 | 55 | 65 | laiku | 12 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
915 | ML | TW | KAOHSIUNG | 2022-10-27 | 2022-11-14 | 2023-01-04 | 51 | 55 | 65 | laiku | 14 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
914 | ML | TW | KEELUNG | 2022-10-24 | 2022-11-08 | 2023-01-04 | 57 | 55 | 65 | laiku | 8 | atvyko laiku | laiku |
913 | ML | TW | KAOHSIUNG | 2022-10-21 | 2022-11-14 | 2023-01-04 | 51 | 55 | 65 | laiku | 14 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
910 | ML | TW | KAOHSIUNG | 2022-09-28 | 2022-10-24 | 2022-12-16 | 53 | 55 | 65 | laiku | 12 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
912 | ML | TW | KAOHSIUNG | 2022-10-11 | 2022-10-31 | 2022-12-16 | 46 | 55 | 65 | laiku | 19 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
911 | ML | TW | KAOHSIUNG | 2022-10-10 | 2022-10-24 | 2022-12-16 | 53 | 55 | 65 | laiku | 12 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
909 | ML | TW | KAOHSIUNG | 2022-08-23 | 2022-10-08 | 2022-12-01 | 54 | 55 | 65 | laiku | 11 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
908 | ML | TW | KAOHSIUNG | 2022-09-06 | 2022-09-27 | 2022-11-25 | 59 | 55 | 65 | laiku | 6 | atvyko laiku | laiku |
907 | ML | TW | KAOHSIUNG | 2022-09-05 | 2022-09-27 | 2022-11-25 | 59 | 55 | 65 | laiku | 6 | atvyko laiku | laiku |
906 | ML | TW | KEELUNG | 2022-08-25 | 2022-09-24 | 2022-11-16 | 53 | 55 | 65 | laiku | 12 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
905 | ML | TW | KAOHSIUNG | 2022-08-22 | 2022-09-05 | 2022-11-03 | 59 | 55 | 65 | laiku | 6 | atvyko laiku | laiku |
904 | ML | TW | KAOHSIUNG | 2022-08-18 | 2022-09-05 | 2022-11-03 | 59 | 55 | 65 | laiku | 6 | atvyko laiku | laiku |
903 | ML | TW | KAOHSIUNG | 2022-08-12 | 2022-09-05 | 2022-11-03 | 59 | 55 | 65 | laiku | 6 | atvyko laiku | laiku |
902 | ML | TW | KAOHSIUNG | 2022-08-11 | 2022-09-05 | 2022-11-03 | 59 | 55 | 65 | laiku | 6 | atvyko laiku | laiku |
900 | ML | TW | KAOHSIUNG | 2022-08-19 | 2022-09-05 | 2022-10-31 | 56 | 55 | 65 | laiku | 9 | atvyko laiku | laiku |
901 | ML | TW | KAOHSIUNG | 2022-08-19 | 2022-09-05 | 2022-10-31 | 56 | 55 | 65 | laiku | 9 | atvyko laiku | laiku |
899 | ML | TW | KAOHSIUNG | 2022-08-04 | 2022-08-22 | 2022-10-25 | 64 | 55 | 65 | laiku | 1 | atvyko laiku | laiku |
898 | ML | TW | KAOHSIUNG | 2022-08-01 | 2022-08-22 | 2022-10-25 | 64 | 55 | 65 | laiku | 1 | atvyko laiku | laiku |
Sea[Sea['Uploading'] == 'HONG KONG'].sort_values(by='ATA',ascending = False)
#matome didžioji dalis krovinių atvyko ankčiau, tame tarpe ir šviežiausi todėl rekomenduoju mažinti TT klientams iki 55-60d
Service | CountryFrom | Uploading | Ordered | ATD | ATA | actual_TT | MIN | MAX | uzsakymai | dienu_skirtumas | sea_atvykimas | sea_vėlavimas | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
897 | ML | HK | HONG KONG | 2023-02-01 | 2023-02-14 | 2023-04-05 | 50 | 55 | 65 | laiku | 15 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
896 | ML | HK | HONG KONG | 2023-01-18 | 2023-02-14 | 2023-04-05 | 50 | 55 | 65 | laiku | 15 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
895 | ML | HK | HONG KONG | 2023-01-17 | 2023-02-14 | 2023-04-05 | 50 | 55 | 65 | laiku | 15 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
894 | ML | HK | HONG KONG | 2023-01-12 | 2023-01-30 | 2023-03-30 | 59 | 55 | 65 | laiku | 6 | atvyko laiku | laiku |
893 | ML | HK | HONG KONG | 2023-01-11 | 2023-01-30 | 2023-03-30 | 59 | 55 | 65 | laiku | 6 | atvyko laiku | laiku |
892 | ML | HK | HONG KONG | 2023-01-10 | 2023-01-30 | 2023-03-30 | 59 | 55 | 65 | laiku | 6 | atvyko laiku | laiku |
891 | ML | HK | HONG KONG | 2023-01-05 | 2023-01-30 | 2023-03-30 | 59 | 55 | 65 | laiku | 6 | atvyko laiku | laiku |
890 | ML | HK | HONG KONG | 2022-12-12 | 2023-01-09 | 2023-03-07 | 57 | 55 | 65 | laiku | 8 | atvyko laiku | laiku |
889 | ML | HK | HONG KONG | 2022-12-12 | 2023-01-09 | 2023-03-07 | 57 | 55 | 65 | laiku | 8 | atvyko laiku | laiku |
888 | ML | HK | HONG KONG | 2022-12-05 | 2023-01-09 | 2023-03-07 | 57 | 55 | 65 | laiku | 8 | atvyko laiku | laiku |
887 | ML | HK | HONG KONG | 2022-11-28 | 2022-12-13 | 2023-02-10 | 59 | 55 | 65 | laiku | 6 | atvyko laiku | laiku |
886 | ML | HK | HONG KONG | 2022-11-25 | 2022-12-13 | 2023-02-10 | 59 | 55 | 65 | laiku | 6 | atvyko laiku | laiku |
885 | ML | HK | HONG KONG | 2022-11-24 | 2022-12-13 | 2023-02-10 | 59 | 55 | 65 | laiku | 6 | atvyko laiku | laiku |
882 | ML | HK | HONG KONG | 2022-11-07 | 2022-11-27 | 2023-01-19 | 53 | 55 | 65 | laiku | 12 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
884 | ML | HK | HONG KONG | 2022-11-16 | 2022-11-27 | 2023-01-19 | 53 | 55 | 65 | laiku | 12 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
883 | ML | HK | HONG KONG | 2022-11-15 | 2022-11-27 | 2023-01-19 | 53 | 55 | 65 | laiku | 12 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
881 | ML | HK | HONG KONG | 2022-10-17 | 2022-11-12 | 2023-01-04 | 53 | 55 | 65 | laiku | 12 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
879 | ML | HK | HONG KONG | 2022-10-06 | 2022-10-25 | 2022-12-29 | 65 | 55 | 65 | laiku | 0 | atvyko laiku | laiku |
880 | ML | HK | HONG KONG | 2022-10-18 | 2022-10-31 | 2022-12-29 | 59 | 55 | 65 | laiku | 6 | atvyko laiku | laiku |
878 | ML | HK | HONG KONG | 2022-09-19 | 2022-10-03 | 2022-11-25 | 53 | 55 | 65 | laiku | 12 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
877 | ML | HK | HONG KONG | 2022-09-16 | 2022-10-03 | 2022-11-25 | 53 | 55 | 65 | laiku | 12 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
876 | ML | HK | HONG KONG | 2022-09-13 | 2022-10-03 | 2022-11-25 | 53 | 55 | 65 | laiku | 12 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
875 | ML | HK | HONG KONG | 2022-09-13 | 2022-10-03 | 2022-11-25 | 53 | 55 | 65 | laiku | 12 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
874 | ML | HK | HONG KONG | 2022-09-09 | 2022-10-03 | 2022-11-25 | 53 | 55 | 65 | laiku | 12 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
873 | ML | HK | HONG KONG | 2022-09-07 | 2022-10-03 | 2022-11-23 | 51 | 55 | 65 | laiku | 14 | atvyko daugiau nei 11 dienomis anksčiau | laiku |
872 | ML | HK | HONG KONG | 2022-12-27 | 2022-09-18 | 2022-11-18 | 61 | 55 | 65 | laiku | 4 | atvyko laiku | laiku |
871 | ML | HK | HONG KONG | 2022-09-05 | 2022-09-18 | 2022-11-16 | 59 | 55 | 65 | laiku | 6 | atvyko laiku | laiku |
870 | ML | HK | HONG KONG | 2022-08-30 | 2022-09-18 | 2022-11-16 | 59 | 55 | 65 | laiku | 6 | atvyko laiku | laiku |
869 | ML | HK | HONG KONG | 2022-08-24 | 2022-09-18 | 2022-11-16 | 59 | 55 | 65 | laiku | 6 | atvyko laiku | laiku |
868 | ML | HK | HONG KONG | 2022-08-16 | 2022-08-28 | 2022-11-08 | 72 | 55 | 65 | pavėlavo | -7 | pavėlavo | vėlavimas nuo 1 iki 2 savaičių |
867 | ML | HK | HONG KONG | 2022-08-04 | 2022-08-28 | 2022-11-08 | 72 | 55 | 65 | pavėlavo | -7 | pavėlavo | vėlavimas nuo 1 iki 2 savaičių |
866 | ML | HK | HONG KONG | 2022-08-08 | 2022-08-16 | 2022-11-04 | 80 | 55 | 65 | pavėlavo | -15 | pavėlavo | vėlavimas nuo 2 iki 3 savaičių |
865 | ML | HK | HONG KONG | 2022-06-30 | 2022-08-16 | 2022-11-04 | 80 | 55 | 65 | pavėlavo | -15 | pavėlavo | vėlavimas nuo 2 iki 3 savaičių |
864 | ML | HK | HONG KONG | 2022-07-20 | 2022-08-01 | 2022-10-25 | 85 | 55 | 65 | pavėlavo | -20 | pavėlavo | vėlavimas nuo 2 iki 3 savaičių |
Yantian = Sea[Sea['Uploading'] == 'YANTIAN'].copy()
Yantian=Yantian.drop(['Service', 'CountryFrom', 'Ordered','sea_atvykimas', 'sea_vėlavimas'], axis = 1)
Yantian
Uploading | ATD | ATA | actual_TT | MIN | MAX | uzsakymai | dienu_skirtumas | |
---|---|---|---|---|---|---|---|---|
2 | YANTIAN | 2022-09-15 | 2022-10-24 | 39 | 50 | 55 | laiku | 16 |
3 | YANTIAN | 2022-09-15 | 2022-10-24 | 39 | 50 | 55 | laiku | 16 |
4 | YANTIAN | 2022-09-15 | 2022-10-24 | 39 | 50 | 55 | laiku | 16 |
5 | YANTIAN | 2022-09-15 | 2022-10-24 | 39 | 50 | 55 | laiku | 16 |
6 | YANTIAN | 2022-09-15 | 2022-10-24 | 39 | 50 | 55 | laiku | 16 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
175 | YANTIAN | 2023-01-17 | 2023-03-10 | 52 | 50 | 55 | laiku | 3 |
176 | YANTIAN | 2023-01-17 | 2023-03-10 | 52 | 50 | 55 | laiku | 3 |
177 | YANTIAN | 2023-01-17 | 2023-03-10 | 52 | 50 | 55 | laiku | 3 |
178 | YANTIAN | 2023-01-17 | 2023-03-10 | 52 | 50 | 55 | laiku | 3 |
179 | YANTIAN | 2023-01-17 | 2023-03-10 | 52 | 50 | 55 | laiku | 3 |
84 rows × 8 columns
Yantian['year/month'] = pd.to_datetime(Yantian['ATA']).dt.to_period('M')
Yantian
Uploading | ATD | ATA | actual_TT | MIN | MAX | uzsakymai | dienu_skirtumas | year/month | |
---|---|---|---|---|---|---|---|---|---|
2 | YANTIAN | 2022-09-15 | 2022-10-24 | 39 | 50 | 55 | laiku | 16 | 2022-10 |
3 | YANTIAN | 2022-09-15 | 2022-10-24 | 39 | 50 | 55 | laiku | 16 | 2022-10 |
4 | YANTIAN | 2022-09-15 | 2022-10-24 | 39 | 50 | 55 | laiku | 16 | 2022-10 |
5 | YANTIAN | 2022-09-15 | 2022-10-24 | 39 | 50 | 55 | laiku | 16 | 2022-10 |
6 | YANTIAN | 2022-09-15 | 2022-10-24 | 39 | 50 | 55 | laiku | 16 | 2022-10 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
175 | YANTIAN | 2023-01-17 | 2023-03-10 | 52 | 50 | 55 | laiku | 3 | 2023-03 |
176 | YANTIAN | 2023-01-17 | 2023-03-10 | 52 | 50 | 55 | laiku | 3 | 2023-03 |
177 | YANTIAN | 2023-01-17 | 2023-03-10 | 52 | 50 | 55 | laiku | 3 | 2023-03 |
178 | YANTIAN | 2023-01-17 | 2023-03-10 | 52 | 50 | 55 | laiku | 3 | 2023-03 |
179 | YANTIAN | 2023-01-17 | 2023-03-10 | 52 | 50 | 55 | laiku | 3 | 2023-03 |
84 rows × 9 columns
sns.barplot(x='year/month', y='actual_TT', hue ='uzsakymai', data=Yantian)
sns.barplot(x='year/month', y='actual_TT', data=Yantian)
<AxesSubplot:xlabel='year/month', ylabel='actual_TT'>
#Atlikus detalesnę analizę Yantian uostui matome kad pastaraisias mėnesiais tranzito laikas nebesvyruoja taip, kaip svyravo seniau,
#matome kad šiuo metu siūlomas tranzito laikas sumažėjo ir jį būtų galima mažinti iki 45-50d.
sns.barplot(x='metai/menuo', y='actual_TT', hue ='uzsakymai', data=Ningbo)
sns.barplot(x='metai/menuo', y='actual_TT', data=Ningbo)
<AxesSubplot:xlabel='metai/menuo', ylabel='actual_TT'>
#Atlikus detalesnę analizę Ningno uostui matome kad pastaraisias mėnesiais tranzito laikas nebesvyruoja taip,
# kaip svyravo seniau,#matome kad šiuo metu siūlomas tranzito laikas sumažėjo ir jį būtų galima mažinti iki 45-50d.
Ningbo = Sea[Sea['Uploading'] == 'NINGBO'].copy()
Ningbo=Ningbo.drop(['Service', 'CountryFrom', 'Ordered','sea_atvykimas', 'sea_vėlavimas', 'dienu_skirtumas'], axis = 1)
Ningbo['menuo'] = pd.DatetimeIndex(Ningbo['ATA']).month
Ningbo['metai/menuo']=pd.to_datetime(Ningbo['ATA']).dt.to_period('M').astype(str)
Ningbo.head(10)
Uploading | ATD | ATA | actual_TT | MIN | MAX | uzsakymai | menuo | metai/menuo | |
---|---|---|---|---|---|---|---|---|---|
14 | NINGBO | 2022-09-12 | 2022-10-31 | 49 | 50 | 55 | laiku | 10 | 2022-10 |
24 | NINGBO | 2022-09-12 | 2022-10-31 | 49 | 50 | 55 | laiku | 10 | 2022-10 |
25 | NINGBO | 2022-09-12 | 2022-10-31 | 49 | 50 | 55 | laiku | 10 | 2022-10 |
26 | NINGBO | 2022-09-12 | 2022-10-31 | 49 | 50 | 55 | laiku | 10 | 2022-10 |
27 | NINGBO | 2022-09-12 | 2022-10-31 | 49 | 50 | 55 | laiku | 10 | 2022-10 |
28 | NINGBO | 2022-09-12 | 2022-10-31 | 49 | 50 | 55 | laiku | 10 | 2022-10 |
29 | NINGBO | 2022-09-12 | 2022-10-31 | 49 | 50 | 55 | laiku | 10 | 2022-10 |
55 | NINGBO | 2022-10-29 | 2022-12-08 | 40 | 50 | 55 | laiku | 12 | 2022-12 |
56 | NINGBO | 2022-10-29 | 2022-12-08 | 40 | 50 | 55 | laiku | 12 | 2022-12 |
57 | NINGBO | 2022-10-29 | 2022-12-08 | 40 | 50 | 55 | laiku | 12 | 2022-12 |
NIN = Ningbo[['menuo','actual_TT']].copy()
from sklearn.linear_model import LinearRegression
X = NIN[['menuo']]
X.head(3)
menuo | |
---|---|
14 | 10 |
24 | 10 |
25 | 10 |
y = NIN['actual_TT']
y.head(2)
14 49 24 49 Name: actual_TT, dtype: int32
model = LinearRegression()
model
LinearRegression()
model.fit(X,y)
LinearRegression()
NIN['prediction'] = model.predict(X)
NIN.head(10)
menuo | actual_TT | prediction | |
---|---|---|---|
14 | 10 | 49 | 43.917630 |
24 | 10 | 49 | 43.917630 |
25 | 10 | 49 | 43.917630 |
26 | 10 | 49 | 43.917630 |
27 | 10 | 49 | 43.917630 |
28 | 10 | 49 | 43.917630 |
29 | 10 | 49 | 43.917630 |
55 | 12 | 40 | 40.922172 |
56 | 12 | 40 | 40.922172 |
57 | 12 | 40 | 40.922172 |
plt.scatter(X,y,color='green')
plt.scatter(X,NIN['prediction'], color='tomato')
#plt.plot(X,NIN['prediction'], color='tomato')
<matplotlib.collections.PathCollection at 0x221bfdefd60>